//
//import kotlinx.cinterop.*
//import platform.posix.*
//import kotlinx.coroutines.*
//import kotlin.concurrent.AtomicInt
//import kotlin.coroutines.CoroutineContext
//
//// 线程参数结构体
//data class ThreadArgs(
//    val block: Runnable,
//    val context: CoroutineContext
//)
//
//// 基于pthread的自定义调度器
//class PThreadDispatcher : CoroutineDispatcher() {
//    private val threadCounter = AtomicInt(0)
//
//    @OptIn(ExperimentalForeignApi::class)
//    override fun dispatch(context: CoroutineContext, block: Runnable) {
//        memScoped {
//            val threadId = alloc<pthread_tVar>()
//            val args = ThreadArgs(block, context)
//
//            // 将参数转换为稳定引用
//            val stableRef = StableRef.create(args)
//
//            val result = pthread_create(
//                threadId.ptr,
//                null,
//                staticCFunction { arg ->
//                    val threadArgs = arg?.asStableRef<ThreadArgs>()?.get()
//                    try {
//                        threadArgs?.block?.run()
//                    } finally {
//                        arg?.asStableRef<ThreadArgs>()?.dispose()
//                    }
//                    null
//                },
//                stableRef.asCPointer()
//            )
//
//            if (result != 0) {
//                stableRef.dispose()
//                throw RuntimeException("Failed to create thread: error $result")
//            }
//
//            // 立即分离线程，避免需要join
//            pthread_detach(threadId.value)
//        }
//    }
//}
//
//// 使用示例
//fun main() = runBlocking {
//    val customDispatcher = PThreadDispatcher()
//
//    println("主协程运行在: ${pthread_self()}")
//
//    val jobs = List(5) { index ->
//        launch(customDispatcher) {
//            println("任务 $index 在自定义线程中执行:${pthread_self()}")
//            delay(1000L) // 模拟异步工作
//            println("任务 $index 完成:${pthread_self()}")
//        }
//    }
//
//    jobs.forEach { it.join() }
//    println("所有任务执行完毕")
//}
